#define AD9851_WCLK_SET HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET) // WCLK
#define AD9851_WCLK_CLR HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_RESET)

#define AD9851_FQUD_SET HAL_GPIO_WritePin(GPIOF, GPIO_PIN_8, GPIO_PIN_SET) // FreqUp
#define AD9851_FQUD_CLR HAL_GPIO_WritePin(GPIOF, GPIO_PIN_8, GPIO_PIN_RESET)

#define AD9851_DATA_Write_1 HAL_GPIO_WritePin(GPIOF, GPIO_PIN_2, GPIO_PIN_SET) // D7
#define AD9851_DATA_Write_0 HAL_GPIO_WritePin(GPIOF, GPIO_PIN_2, GPIO_PIN_RESET)

#define AD9851_RST_SET HAL_GPIO_WritePin(GPIOG, GPIO_PIN_1, GPIO_PIN_SET) // Reset(可有可无)
#define AD9851_RST_CLR HAL_GPIO_WritePin(GPIOG, GPIO_PIN_1, GPIO_PIN_RESET)

/********************************************
函数名称：init_dds
功    能：在复位AD9851
参    数：无
返回值  ：无
*********************************************/
void init_dds(void) void init_dds(void)
{
    AD9851_WCLK_CLR;
    AD9851_FQUD_CLR;
    HAL_Delay(2);
    AD9851_WCLK_SET;
    HAL_Delay(2);
    AD9851_WCLK_CLR;
    HAL_Delay(5);
    AD9851_FQUD_SET;
    HAL_Delay(2);
    AD9851_FQUD_CLR;
}
void write_dds(unsigned long dds)
{
    uint8_t i;
    AD9851_FQUD_CLR;
    AD9851_WCLK_CLR;
    for (i = 0; i < 40; i++)
    {
        AD9851_WCLK_CLR;
        HAL_Delay(3);
        if (dds & 0x00000001)
            AD9851_DATA_Write_1;
        else
            AD9851_DATA_Write_0;
        HAL_Delay(2);
        AD9851_WCLK_SET;
        dds = dds >> 1;
    }
    AD9851_FQUD_SET;
    AD9851_WCLK_CLR;
    HAL_Delay(5);
    AD9851_FQUD_CLR;
}
/********************************************
函数名称：write_freq
功    能：写DDS的控制/频率字（共40bit）
参    数：freq /Hz
返回值  ：无
*********************************************/
void write_freq(unsigned long freq)
{
    unsigned long dds;
    dds = 143.1655765333333 * freq;
    write_dds(dds);
}
